<template>
  <div>
      <common-head title="联系人列表" />
      <div class="warp">
          <van-address-list
          v-model="chosenAddressId"
          :list="list"
          default-tag-text="默认"
          @add="onAdd"
          @edit="onEdit"
          @select="choseContact"
          />
      </div>
  </div>
</template>

<script>
import CommonHead from '../../components/CommonHead.vue'
import { contactList } from '@api'
export default {
  components: { CommonHead },
  data () {
    return {
      chosenAddressId: '-1',
      list: []
    }
  },
  created () {
    this.contactList()
  },
  // 这个是将前往过来的存入缓存中 只要进入这个页面就会设置一个缓存
  beforeRouteEnter (to, from, next) {
    localStorage.setItem('from', from.path)
    next()
  },
  methods: {
    // 切换选中地址时触发的函数 先判断从哪里过来的 如果从个人中心过来的 那就什么都不干
    // 如果是从提交订单页过来的那就传一个id过去 在跳转过去
    choseContact (contact, index) { // 参数一是选中的联系人 第二个是下标
      // 联系人切换
      const from = localStorage.getItem('from')
      if (from === '/confirmOrder') {
        // 从确认订单页过来
        this.$router.push({
          path: from,
          query: {
            id: contact.id
          }
        })
      }
    },
    // 请求获取收货人列表信息
    contactList () {
      contactList({
        token: localStorage.getItem('token')
      }).then(res => {
        if (res.data.code === 0) {
          const contacts = res.data.data.result
          const contactArr = []
          contacts.forEach(contact => {
            // 循环每个收货地址所有的key
            const obj = {}
            for (const key in contact) {
              switch (key) {
                case 'id':
                  obj.id = contact[key]
                  break
                case 'linkMan':
                  obj.name = contact[key]
                  break
                case 'mobile':
                  obj.tel = contact[key]
                  break
                case 'address':
                  obj.address = contact[key]
                  break
                case 'isDefault':
                  obj.isDefault = contact[key]
                  break
                default:
                  break
              }
            }
            contactArr.push(obj)
          })
          // 赋值给他
          this.list = contactArr
          // 定义默认选中联系人id
          const contact = this.list.find(contact => contact.isDefault)
          // 如果有默认收货的地址 那么选中的id就是默认收货地址的id 否则给第一个地址收货地址
          if (contact) {
            this.chosenAddressId = contact.id
          } else {
            this.chosenAddressId = this.list[0].id
          }
        }
      })
    },
    onAdd () {
      // 这里是添加地址 点击直接进入添加收货地址页面
      this.$router.push('/contactAdd')
    },
    onEdit (item, index) {
      // 这里是编辑地址 进入
      this.$router.push({
        path: '/contactEdit',
        query: {
          id: item.id
        }
      })
    }
  }
}
</script>

<style lang="scss" scoped>
.warp{
  padding-top: 46px;
}
</style>
